Hive-এ টেবিল দুটি প্রধানভাবে বিভক্ত: Internal Tables এবং External Tables। এই দুটি টেবিলের মধ্যে ব্যবহারের দিক থেকে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে। Internal এবং External Tables ব্যবহারের সময় কোন ধরনের ডেটা সংরক্ষণ, ম্যানেজমেন্ট এবং অপারেশন হবে, তা নির্ধারণ করা গুরুত্বপূর্ণ।
Internal Table (Managed Table)
Internal Table (বা Managed Table) এমন একটি টেবিল যেখানে Hive সম্পূর্ণভাবে ডেটার সঞ্চয় এবং লাইফসাইকেল পরিচালনা করে। যখন আপনি একটি Internal Table তৈরি করেন, Hive টেবিলটি এবং তার ডেটা উভয়ই নিজস্বভাবে পরিচালনা করে। এটি মূলত Hive-এর ডেটাবেস-এ অন্তর্ভুক্ত থাকে এবং Hive-এর সাথে সম্পর্কিত HDFS তে ডেটা সংরক্ষণ করা হয়।
Internal Table এর বৈশিষ্ট্য
- ডেটার ম্যানেজমেন্ট: Hive Internal Table তৈরি করার সময়, Hive ডেটা এবং টেবিলের লাইফসাইকেল পুরোপুরি নিয়ন্ত্রণ করে। এর মানে হল, যখন আপনি Internal Table ড্রপ করেন, তখন টেবিলের সাথে সংযুক্ত ডেটাও ডিলিট হয়ে যায়।
- ডেটা সংরক্ষণ: Internal Table-এর ডেটা Hive-এর HDFS-এ সংরক্ষিত থাকে এবং Hive নিজে এটি ম্যানেজ করে।
- ড্রপ করলে ডেটা মুছে যায়: Internal Table যদি ড্রপ করা হয়, তবে টেবিলের সমস্ত ডেটা এবং স্কিমাও HDFS থেকে সরিয়ে নেওয়া হয়।
উদাহরণ:
CREATE TABLE employees (id INT, name STRING, salary FLOAT);
External Table
External Table এমন একটি টেবিল, যা Hive এর বাইরের একটি ডেটা ফাইলের উপর কাজ করে। External Table তৈরির সময়, Hive ডেটা ম্যানেজমেন্ট বা লাইফসাইকেল পরিচালনা করে না, বরং এটি শুধুমাত্র ডেটার অবস্থান (উল্লেখযোগ্যভাবে HDFS অথবা অন্য স্টোরেজ) এবং স্কিমা সম্পর্কে জানায়। এটি ব্যবহারকারীকে ডেটা উত্স (data source) এর উপর নিয়ন্ত্রণ দিতে সহায়তা করে।
External Table এর বৈশিষ্ট্য
- ডেটার ম্যানেজমেন্ট: Hive External Table-এর ডেটার ম্যানেজমেন্ট Hive-এর বাইরে হয়, অর্থাৎ ডেটার লাইফসাইকেল Hive দ্বারা পরিচালিত হয় না। Hive শুধু স্কিমা এবং ফাইলের অবস্থানকে ট্র্যাক করে।
- ডেটা সংরক্ষণ: External Table-এ ডেটা বাইরের ফাইল সিস্টেমে সংরক্ষিত থাকে (যেমন HDFS বা অন্য কোথাও), এবং Hive কেবলমাত্র সেই ডেটাকে রিড করতে পারে।
- ড্রপ করলে ডেটা মুছে যায় না: যদি একটি External Table ড্রপ করা হয়, তখন ফাইল সিস্টেমে সংরক্ষিত ডেটা সুরক্ষিত থাকে, কারণ Hive কেবলমাত্র স্কিমা পরিচালনা করে।
উদাহরণ:
CREATE EXTERNAL TABLE external_employees (id INT, name STRING, salary FLOAT)
LOCATION '/user/hive/external/employees';
Internal এবং External Tables এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Internal Table | External Table |
|---|---|---|
| ডেটার ম্যানেজমেন্ট | Hive সম্পূর্ণভাবে ডেটা ম্যানেজ করে | Hive শুধুমাত্র স্কিমা এবং অবস্থান ট্র্যাক করে |
| ডেটা সংরক্ষণ | Hive এর HDFS-এ সংরক্ষিত থাকে | বাইরের ডেটা ফাইল সিস্টেমে (যেমন HDFS বা অন্য কোথাও) সংরক্ষিত থাকে |
| ড্রপ করলে ডেটা মুছে যায় | হ্যাঁ, Internal Table ড্রপ করলে ডেটা মুছে যায় | না, External Table ড্রপ করলে ডেটা মুছে যায় না |
| লাইফসাইকেল | Hive টেবিল এবং ডেটার লাইফসাইকেল ম্যানেজ করে | ডেটা ফাইলের লাইফসাইকেল Hive দ্বারা ম্যানেজ হয় না |
| ব্যবহারের উপযোগিতা | Hive এর অধীনে সম্পূর্ণ ডেটা ম্যানেজমেন্ট | বাইরের ডেটা ফাইলের জন্য, যেখানে Hive শুধুমাত্র স্কিমা ব্যবহার করে |
উপসংহার
Internal Tables এবং External Tables এর মধ্যে পার্থক্য বুঝে সঠিক সময় এবং প্রয়োজন অনুযায়ী সঠিক টেবিল ধরন নির্বাচন করা জরুরি। যদি ডেটার সম্পূর্ণ ম্যানেজমেন্ট Hive দ্বারা প্রয়োজন হয় এবং আপনি চান যে ডেটা Hive দ্বারা নিয়ন্ত্রিত হোক, তাহলে Internal Table নির্বাচন করা উচিত। অন্যদিকে, যদি আপনি বাইরের ডেটা ফাইলগুলিকে Hive-এর মাধ্যমে বিশ্লেষণ করতে চান এবং Hive সিস্টেমে ডেটা সংরক্ষণ করতে না চান, তবে External Table ব্যবহার করা সবচেয়ে উপযুক্ত।
Read more